home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 24 / AACD 24.iso / AACD / System / VisualPrefs / DocsItaliano / VP-Developer.doc < prev    next >
Text File  |  1999-12-09  |  7KB  |  168 lines

  1.  
  2. Ultimo aggiornamento: 8.12.99
  3.  
  4.                               Introduzione:
  5.  
  6.                L'INTERFACCIA DI VISUALPREFS PER SVILUPPATORI
  7.  
  8.                         Documento in preparazione
  9.  
  10.  
  11. Se sei uno sviluppatore puoi usufruire di certe funzionalità di VisualPrefs.
  12.  
  13. Anche se non esiste ancora una vera e propria API di VisualPrefs per gli
  14. sviluppatori è già possibile utilizzare le classi BOOPSI che VisualPrefs
  15. aggiunge al sistema.
  16.  
  17. Lo scopo di queste classi è fornire ai programmatori un modo facile di
  18. ottenere il "look di VisualPrefs" senza dover aspettare che io implementi
  19. in VisualPrefs un patch per i loro applicativi. ;-)
  20.  
  21. Attualmente c'è solo una classe:
  22.  
  23. "tbiclass" - la classe di immagini per la titlebar (titlebar image class)
  24.  
  25. Questa classe fornisce le immagini più comunemente usate per i gadget
  26. aggiunti dagli applicativi alla titlebar delle loro finestre. Esempi di
  27. ciò sono l'onnipresente gadget "iconify" o il gadget "padlock" di DirOpus 5.
  28.  
  29. Tutti i programmi che usano questa classe riceveranno automaticamente lo
  30. stesso aspetto per le loro immagini per la titlebar se VisualPrefs è in
  31. funzione. Probabilmente è meglio che avere miriadi di versioni diverse
  32. della stessa immagine...
  33.  
  34. Puoi usare "tbiclass" proprio come "sysiclass"; sono entrambe sottoclassi di
  35. "imageclass". Un'immagine "tbiclass" può essere creata chiamando NewObject()
  36. con i seguenti tag:
  37.  
  38. SYSIA_DrawInfo - Questo è assolutamente necessario. DEVI passare a "tbiclass"
  39.                  un puntatore a DrawInfo oppure NewObject() fallirà.
  40.  
  41. SYSIA_Which - Per specificare quale immagine si vuole; attualmente ci sono
  42.               sei tipi di immagine:
  43.  
  44.               POPUPIMAGE    - Immagine per il gadget "pop-up" di MUI
  45.               MUIIMAGE      - Immagine per il gadget "settings" di MUI
  46.               SNAPSHOTIMAGE - Immagine per il gadget "snapshot" di MUI
  47.               ICONIFYIMAGE  - Immagine per il gadget "iconify"
  48.               PADLOCKIMAGE  - Immagine per il gadget "padlock" di DirOpus
  49.               TBFRAMEIMAGE  - Immagine vuota (solo contorno) di uso generale
  50.  
  51. IA_Width, IA_Height - Questi sono riconosciuti solo dal tipo TBFRAMEIMAGE;
  52.                       gli altri tipi di immagine li ignorano e hanno sempre
  53.                       la stessa dimensione del gadget di profondità.
  54.  
  55. SYSIA_ReferenceFont - Questo è riconosciuto solo dal tipo TBFRAMEIMAGE;
  56.                       gli altri tipi di immagine lo ignorano e hanno sempre
  57.                       la stessa altezza del gadget di profondità.
  58.  
  59. TBIA_FullFrame - Questo è riconosciuto solo dal tipo TBFRAMEIMAGE; impostarlo
  60.                  a TRUE per ottenere un'immagine che contiene anche una
  61.                  cornice interna, se lo stile corrente ne prevede una. Questa
  62.                  è la scelta più adatta quando il contenuto dell'immagine è
  63.                  di natura grafica. Impostarlo a FALSE per ottenere
  64.                  un'immagine con al più la cornice esterna; questa è invece
  65.                  la scelta più adatta quando l'immagine deve contenere del
  66.                  testo (poiché la cornice interna potrebbe essere troppo
  67.                  piccola per scriverci dentro il testo). Il default è FALSE.
  68.                  (Disponibile a partire da VisualPrefs 41.38)
  69.  
  70. È anche possibile usare questo tag con GetAttr():
  71.  
  72. TBIA_ContentsBox - Per chiedere all'immagine la posizione e la dimensione
  73.                    del suo effettivo "box dei contenuti" relativamente
  74.                    all'immagine stessa. Tale box è la parte in cui, se
  75.                    necessario, è possibile aggiungere ulteriori immagini
  76.                    personalizzate. Questo probabilmente ha senso solo con
  77.                    immagini TBFRAMEIMAGE. Per posizionare correttamente il
  78.                    box occorre aggiungere i suoi valori di offset Left e Top
  79.                    a quelli dell'immagine. Notare che, anche entro le
  80.                    dimensioni restituite, bisognerebbe sempre lasciare un
  81.                    piccolo spazio (per esempio due pixel) intorno alle
  82.                    proprie immagini, per ottenere risultati esteticamente
  83.                    migliori. Questo è un attributo a sola lettura; il valore
  84.                    che si passa a questo tag deve essere un puntatore a una
  85.                    struttura IBox. NON passare un puntatore a longword!
  86.                    (Disponibile a partire da VisualPrefs 41.35)
  87.  
  88. Naturalmente se NewObject() fallisce dovresti fornire una immagine di ripiego
  89. creata dal tuo programma. Tuttavia ho rilasciato una classe "tbiclass"
  90. esterna freeware (dev/gui/titlebar_ic.lha) che potrai includere nella
  91. distribuzione dei tuoi applicativi. Questa classe fornirà le immagini
  92. necessarie e verrà sostituita automaticamente da quella di VisualPrefs
  93. se sarà presente.
  94. Di conseguenza puoi mantenere molto semplici le tue immagini di ripiego,
  95. o non averle affatto ;-)
  96.  
  97. Se usi TBFRAMEIMAGE per creare delle tue immagini speciali per la titlebar
  98. puoi aggiungervi un contenuto in due modi: impostando il campo NextImage
  99. all'indirizzo della tua immagine interna, oppure facendo una sottoclasse di
  100. "tbiclass" e ridefinendo i metodi IM_DRAW/IM_DRAWFRAME (ovviamente in questo
  101. caso devi lasciare che la superclasse esegua prima il suo rendering!).
  102.  
  103. È importante notare che tutte le istanze di immagini "tbiclass" avranno un
  104. valore di -1 in Image->LeftEdge. Questo non dovrebbe venire modificato e
  105. dovresti posizionare i tuoi gadget nella titlebar rispettando ciò. Il motivo
  106. di questo apparentemente strano comportamento è che anche le immagini dei
  107. gadget di Intuition per la titlebar funzionano in questo modo, e dovremmo
  108. cercare di mantenere la massima compatibilità con Intuition.
  109.  
  110. Inoltre assicurati di modificare se necessario la dimensione del tuo gadget
  111. per adattarla alla dimensione dell'immagine ottenuta.
  112.  
  113. Un esempio di tutto ciò potrebbe essere:
  114.  
  115.    ...
  116.  
  117.    /* Crea l'immagine */
  118.  
  119.    if (!(iconifyimage = NewObject(NULL,"tbiclass",SYSIA_Which,ICONIFYIMAGE,
  120.                                                   SYSIA_DrawInfo,dri,
  121.                                                   TAG_END)))
  122.    {
  123.       iconifyimage = builtin_iconifyimage;
  124.    }
  125.  
  126.    /* Usa l'immagine */
  127.  
  128.    gad->GadgetRender = iconifyimage;
  129.    ...
  130.  
  131.    /* Libera l'immagine */
  132.  
  133.    if (iconifyimage != builtin_iconifyimage) DisposeObject(iconifyimage);
  134.  
  135.    ...
  136.  
  137. Questo è tutto. Il vero file include per "tbiclass" si trova nella release
  138. a sè stante su Aminet, comunque tutto ciò che ti serve per usare "tbiclass"
  139. nei tuoi applicativi è inserire le righe seguenti in cima al tuo codice
  140. sorgente. :-]
  141.  
  142. ------ taglia qui ------8<------ taglia qui ------8<------ taglia qui ------
  143.  
  144. #define POPUPIMAGE    (101)
  145. #define MUIIMAGE      (102)
  146. #define SNAPSHOTIMAGE (103)
  147. #define ICONIFYIMAGE  (104)
  148. #define PADLOCKIMAGE  (105)
  149. #define TBFRAMEIMAGE  (106)
  150.  
  151. #define TBIA_Dummy       (TAG_USER + 0x0B0000)
  152. #define TBIA_ContentsBox (TBIA_Dummy + 0x0001)
  153. #define TBIA_FullFrame   (TBIA_Dummy + 0x0002)
  154.  
  155. ------ taglia qui ------8<------ taglia qui ------8<------ taglia qui ------
  156.  
  157. C'è già un applicativo che usa "tbiclass", ViNCEd di Thomas Richter.
  158.  
  159. Spero che anche tu supporterai "tbiclass" e contribuirai in tal modo a
  160. dare finalmente un aspetto consistente a tutti i gadget per la titlebar
  161. usati negli applicativi!
  162.  
  163. Grazie,
  164.                                       Massimo Tantignone (tanti@intercom.it)
  165.  
  166.  
  167.  
  168.